/**
 * @license
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import {html} from '@polymer/polymer/lib/utils/html-tag.js';

export const htmlTemplate = html`
    <style include="shared-styles">
      :host {
        background-color: var(--dialog-background-color);
        display: block;
        max-height: 90vh;
      }
      :host([disabled]) {
        pointer-events: none;
      }
      :host([disabled]) .container {
        opacity: .5;
      }
      .container {
        display: flex;
        flex-direction: column;
        max-height: 100%;
      }
      section {
        border-top: 1px solid var(--border-color);
        flex-shrink: 0;
        padding: var(--spacing-m) var(--spacing-xl);
        width: 100%;
      }
      section.labelsContainer {
        /* We want the :hover highlight to extend to the border of the dialog. */
        padding: var(--spacing-m) 0;
      }
      .actions {
        background-color: var(--dialog-background-color);
        bottom: 0;
        display: flex;
        justify-content: space-between;
        position: sticky;
        /* @see Issue 8602 */
        z-index: 1;
      }
      .actions .right gr-button {
        margin-left: var(--spacing-l);
      }
      .peopleContainer,
      .labelsContainer {
        flex-shrink: 0;
      }
      .peopleContainer {
        border-top: none;
        display: table;
      }
      .peopleList {
        display: flex;
      }
      .peopleListLabel {
        color: var(--deemphasized-text-color);
        margin-top: var(--spacing-xs);
        min-width: 6em;
        padding-right: var(--spacing-m);
      }
      gr-account-list {
        display: flex;
        flex-wrap: wrap;
        flex: 1;
      }
      #reviewerConfirmationOverlay {
        padding: var(--spacing-l);
        text-align: center;
      }
      .reviewerConfirmationButtons {
        margin-top: var(--spacing-l);
      }
      .groupName {
        font-weight: var(--font-weight-bold);
      }
      .groupSize {
        font-style: italic;
      }
      .textareaContainer {
        min-height: 12em;
        position: relative;
      }
      .textareaContainer,
      #textarea,
      gr-endpoint-decorator {
        display: flex;
        width: 100%;
      }
      gr-endpoint-decorator[name="reply-label-scores"] {
        display: block;
      }
      .previewContainer gr-formatted-text {
        background: var(--table-header-background-color);
        padding: var(--spacing-l);
      }
      .draftsContainer h3 {
        margin-top: var(--spacing-xs);
      }
      #checkingStatusLabel,
      #notLatestLabel {
        margin-left: var(--spacing-l);
      }
      #checkingStatusLabel {
        color: var(--deemphasized-text-color);
        font-style: italic;
      }
      #notLatestLabel,
      #savingLabel {
        color: var(--error-text-color);
      }
      #savingLabel {
        display: none;
      }
      #savingLabel.saving {
        display: inline;
      }
      #pluginMessage {
        color: var(--deemphasized-text-color);
        margin-left: var(--spacing-l);
        margin-bottom: var(--spacing-m);
      }
      #pluginMessage:empty {
        display: none;
      }
    </style>
    <div class="container" tabindex="-1">
      <section class="peopleContainer">
        <div class="peopleList">
          <div class="peopleListLabel">Reviewers</div>
          <gr-account-list id="reviewers" accounts="{{_reviewers}}" removable-values="[[change.removable_reviewers]]" filter="[[filterReviewerSuggestion]]" pending-confirmation="{{_reviewerPendingConfirmation}}" placeholder="Add reviewer..." on-account-text-changed="_handleAccountTextEntry" suggestions-provider="[[_getReviewerSuggestionsProvider(change)]]">
          </gr-account-list>
        </div>
        <div class="peopleList">
          <div class="peopleListLabel">CC</div>
          <gr-account-list id="ccs" accounts="{{_ccs}}" filter="[[filterCCSuggestion]]" pending-confirmation="{{_ccPendingConfirmation}}" allow-any-input="" placeholder="Add CC..." on-account-text-changed="_handleAccountTextEntry" suggestions-provider="[[_getCcSuggestionsProvider(change)]]">
          </gr-account-list>
        </div>
        <gr-overlay id="reviewerConfirmationOverlay" on-iron-overlay-canceled="_cancelPendingReviewer">
          <div class="reviewerConfirmation">
            Group
            <span class="groupName">
              [[_pendingConfirmationDetails.group.name]]
            </span>
            has
            <span class="groupSize">
              [[_pendingConfirmationDetails.count]]
            </span>
            members.
            <br>
            Are you sure you want to add them all?
          </div>
          <div class="reviewerConfirmationButtons">
            <gr-button on-click="_confirmPendingReviewer">Yes</gr-button>
            <gr-button on-click="_cancelPendingReviewer">No</gr-button>
          </div>
        </gr-overlay>
      </section>
      <section class="textareaContainer">
        <gr-endpoint-decorator name="reply-text">
          <gr-textarea id="textarea" class="message" autocomplete="on" placeholder="[[_messagePlaceholder]]" fixed-position-dropdown="" hide-border="true" monospace="true" disabled="{{disabled}}" rows="4" text="{{draft}}" on-bind-value-changed="_handleHeightChanged">
          </gr-textarea>
        </gr-endpoint-decorator>
      </section>
      <section class="previewContainer">
        <label>
          <input type="checkbox" checked="{{_previewFormatting::change}}">
          Preview formatting
        </label>
        <gr-formatted-text content="[[draft]]" hidden\$="[[!_previewFormatting]]" config="[[projectConfig.commentlinks]]"></gr-formatted-text>
      </section>
      <section class="labelsContainer">
        <gr-endpoint-decorator name="reply-label-scores">
          <gr-label-scores id="labelScores" account="[[_account]]" change="[[change]]" on-labels-changed="_handleLabelsChanged" permitted-labels="[[permittedLabels]]"></gr-label-scores>
        </gr-endpoint-decorator>
        <div id="pluginMessage">[[_pluginMessage]]</div>
      </section>
      <section class="draftsContainer" hidden\$="[[_computeHideDraftList(draftCommentThreads)]]">
        <div class="includeComments">
          <input type="checkbox" id="includeComments" checked="{{_includeComments::change}}">
          <label for="includeComments">Publish [[_computeDraftsTitle(draftCommentThreads)]]</label>
        </div>
        <gr-thread-list id="commentList" hidden\$="[[!_includeComments]]" threads="[[draftCommentThreads]]" change="[[change]]" change-num="[[change._number]]" logged-in="true" hide-toggle-buttons="" on-thread-list-modified="_onThreadListModified">
        </gr-thread-list>
        <span id="savingLabel" class\$="[[_computeSavingLabelClass(_savingComments)]]">
          Saving comments...
        </span>
      </section>
      <section class="actions">
        <div class="left">
          <span id="checkingStatusLabel" hidden\$="[[!_isState(knownLatestState, 'checking')]]">
            Checking whether patch [[patchNum]] is latest...
          </span>
          <span id="notLatestLabel" hidden\$="[[!_isState(knownLatestState, 'not-latest')]]">
            [[_computePatchSetWarning(patchNum, _labelsChanged)]]
            <gr-button link="" on-click="_reload">Reload</gr-button>
          </span>
        </div>
        <div class="right">
          <gr-button link="" id="cancelButton" class="action cancel" on-click="_cancelTapHandler">Cancel</gr-button>
          <template is="dom-if" if="[[canBeStarted]]">
            <!-- Use 'Send' here as the change may only about reviewers / ccs
              and when this button is visible, the next button will always
              be 'Start review' -->
            <gr-button link="" disabled="[[_isState(knownLatestState, 'not-latest')]]" class="action save" has-tooltip="" title="[[_saveTooltip]]" on-click="_saveClickHandler">Save</gr-button>
          </template>
          <gr-button id="sendButton" primary="" disabled="[[_sendDisabled]]" class="action send" has-tooltip="" title\$="[[_computeSendButtonTooltip(canBeStarted)]]" on-click="_sendTapHandler">[[_sendButtonLabel]]</gr-button>
        </div>
      </section>
    </div>
    <gr-js-api-interface id="jsAPI"></gr-js-api-interface>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
    <gr-storage id="storage"></gr-storage>
    <gr-reporting id="reporting"></gr-reporting>
`;
